#ifndef _RENDER_STATE_H_
#define _RENDER_STATE_H_

#include "Vertex.h"
#include "Vector3.h"
#include "Ray.h"

class Intersectable;

class RenderState
{
public:
	RenderState(void);
	RenderState(Ray* r);
	RenderState(RenderState* previous, Ray* r, bool diffuse, bool specular);
	~RenderState(void);

	void setFinalGather(bool finalGather);
	bool isFinalGather();
	void setIntersection(Intersectable* object, double hitT, double hitU, double hitV);
	bool hit();
	int getDepth();
	int getDiffuseDepth();
	int getSpecularDepth();
	double getU();
	double getV();
	double getT();
	Vertex* getVertex();
	Vector3* getGeoNormal();
	Intersectable* getObject();
	Ray* getRay();


private:
	Vertex*			v;
	Vector3*		ng;
	Ray*			r;
	double			hitT;
	double			hitU;
	double			hitV;
	Intersectable*	object;
	int				diffuseDepth;
	int				specularDepth;
	bool			finalGather;
};


#endif


